
package callProcs;

import java.math.BigInteger;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import serverconf.LeerArchivodeConexion;


public class ProcsCliente {
    
    
  java.sql.Connection  con = null;
  LeerArchivodeConexion leer;
    String server = null;
    String bd= null;
    String user= null;
    String pass= null;
    public ProcsCliente(){
        try {
            leer = new LeerArchivodeConexion();
            leer.LeerArchivo();
            server = leer.VerServidor();
            bd = leer.VerBd();
            user = leer.VerUsuario();
            pass = leer.VerContraseña();
  
            con = DriverManager.getConnection("jdbc:mysql://"+server+"/"+bd,user,pass);
 


        } catch (SQLException ex) {
            Logger.getLogger(ProcsInsertar.class.getName()).log(Level.SEVERE, null, ex);
        
    }
    }
 
    
    /*
     * Retorna los datos del cliente, para modificaciones y visualizarlos
     */
     public java.sql.ResultSet VerdatosCliente(String sentencia) throws SQLException{
         java.sql.ResultSet rs = null ;
       
            Statement cs = con.createStatement();
            rs = cs.executeQuery("SELECT concat(Nombre_cliente,' ', Apellido_cliente) AS 'Nombre' ,concat(No_registro_cliente,No_orden_cliente) AS 'No. Cedula' ,"+
                                 "tel.Telefono,tel.idTelefonoCliente, concat(dir.Direccion_cliente, ' Zona  ', dir.zona, ' ',muni.Nombre_municipio, ',', depto.Nombre_departamento) AS 'Direccion' , "+
                                 " c.idCliente , telDos.Telefono ,telDos.idTelefonoCliente , c.Dpi_cliente FROM Cliente c "+
                                 "INNER JOIN telefonocliente tel ON tel.Cliente_idCliente = c.idCliente  "+
                                 "INNER JOIN direccion_cliente dir ON dir.idDireccion_cliente = c.Direccion_cliente_idDireccion_cliente  "+
                                 "INNER JOIN telefonocliente telDos ON telDos.Cliente_idCliente = c.idCliente  "+
                                 "INNER JOIN  municipio muni ON muni.idMunicipio = dir.Municipio_idMunicipio  "+
                                 "INNER JOIN departamento depto ON depto.idDepartamento = muni.Departamento_idDepartamento "+
                                sentencia);
           return rs;
     }
     
     public java.sql.ResultSet VerdatoCliente(String sentencia) throws SQLException{
         java.sql.ResultSet rs = null ;
         
         
            Statement cs = con.createStatement();
            rs = cs.executeQuery("SELECT  Nombre_cliente, Apellido_cliente, concat(Nombre_cliente,' ', Apellido_cliente) AS 'Nombre' ,concat(No_registro_cliente,No_orden_cliente) AS 'No. Cedula' ,"+
                                 "month(Fecha_nacimiento) as 'MES', day(Fecha_nacimiento) as 'Dia', Year(Fecha_Nacimiento) as 'Año',"+
                                 "tel.Telefono,tel.idTelefonoCliente, dir.Direccion_cliente as 'Direccion', dir.zona as 'Zona' ,muni.Nombre_municipio as 'Muni',depto.Nombre_departamento as 'Depto' , "+
                                 "No_registro_cliente as 'Reg' ,No_orden_cliente as 'orden',telDos.Telefono ,telDos.idTelefonoCliente , "  +
                                 " c.idCliente , c.Direccion_cliente_idDireccion_cliente as 'Dir', c.Dpi_cliente , c.Estado_civil, c.Sabe_firmar FROM Cliente c "+
                                 "INNER JOIN telefonocliente tel ON tel.Cliente_idCliente = c.idCliente  "+
                                 "INNER JOIN telefonocliente telDos ON telDos.Cliente_idCliente = c.idCliente  "+
                                 "INNER JOIN direccion_cliente dir ON dir.idDireccion_cliente = c.Direccion_cliente_idDireccion_cliente  "+
                                 "INNER JOIN  municipio muni ON muni.idMunicipio = dir.Municipio_idMunicipio  "+
                                 "INNER JOIN departamento depto ON depto.idDepartamento = muni.Departamento_idDepartamento "+
                                sentencia);
           return rs;
     }
    
     public java.sql.ResultSet ObtenerMuni(String muni) throws SQLException{
        java.sql.ResultSet rs = null ;
        try {
            
            Statement cs = con.createStatement();
            
                rs = cs.executeQuery("SELECT idMunicipio AS 'ID', Departamento_idDepartamento AS 'DEPTO',Nombre_Municipio as 'nombre' "+
                          " FROM municipio WHERE Nombre_Municipio LIKE '%"+muni+"%'"); 
           
        } catch (SQLException ex) {
            Logger.getLogger(ProcsCliente.class.getName()).log(Level.SEVERE, null, ex);
        }
         
         return rs;
     }
     
    public void ActualizaCliente(int IdCliente , String nombre ,String apellido ,int idDireccion ,
                                    String FechaNac , boolean estado_civil , boolean firma, int registro,
                                    String orden,BigInteger dpi  , String usuario) throws SQLException{
        
        
          java.sql.CallableStatement cs = con.prepareCall("{call Actualiza_cliente( "+IdCliente+",'"+nombre+"' , '"+apellido +"' ,"+ idDireccion +
                                                            ",'" + FechaNac+"',"+ estado_civil+ ","+ firma + ","+ registro+","+"'"+ orden + "',"+
                                                            dpi+",'"+ usuario+ "')}");
    
           java.sql.Statement stmt  = con.createStatement();
           java.sql.ResultSet rs = cs.executeQuery();
        
        
        
        
    }
    
    public java.sql.ResultSet ObtenerMuni(int idDep, String nombre) throws SQLException
     {

         java.sql.ResultSet rs = null;
         Statement cs = con.createStatement();

         rs = cs.executeQuery("select idMunicipio from municipio where Departamento_idDepartamento = " + String.valueOf(idDep) + " and Nombre_municipio =" + "'"+nombre+"'");
         return rs;
     }
    
    public void ActualizaDireccionCliente(int idDir, String direccion, int zona, int idMuni) throws SQLException{
        
          java.sql.CallableStatement cs = con.prepareCall("{call Actualiza_direccion_cliente(" + idDir + ",'"+direccion+"',"+ zona + ","+ idMuni+" )}");
    
           java.sql.Statement stmt  = con.createStatement();
           java.sql.ResultSet rs = cs.executeQuery();
        
    }
    
    public void ActualizaDireccionEstudiante(int idDir, String direccion, int zona, int idMuni) throws SQLException{
        
          java.sql.CallableStatement cs = con.prepareCall("{call Actualiza_direccion_estudiante(" + idDir + ",'"+direccion+"',"+ zona + ","+ idMuni+" )}");
    
           java.sql.Statement stmt  = con.createStatement();
           java.sql.ResultSet rs = cs.executeQuery();
        
    }
    
    public java.sql.ResultSet verDatosClienteTabla(String sentencia) throws SQLException{
         java.sql.ResultSet rs = null ;
             Statement cs = con.createStatement();
            rs = cs.executeQuery("SELECT  Nombre_cliente, Apellido_cliente, concat(Nombre_cliente,' ', Apellido_cliente) AS 'Nombre' ,concat(No_registro_cliente,No_orden_cliente) AS 'No. Cedula' ,"+
                                 "month(Fecha_nacimiento) as 'MES', day(Fecha_nacimiento) as 'Dia', Year(Fecha_Nacimiento) as 'Año',"+
                                 "tel.Telefono, dir.Direccion_cliente as 'Direccion', dir.zona as 'Zona' ,muni.Nombre_municipio as 'Muni',depto.Nombre_departamento as 'Depto' , "+
                                  "No_registro_cliente as 'Reg' ,No_orden_cliente as 'orden', " +
                                  "c.idCliente , c.Direccion_cliente_idDireccion_cliente as 'Dir', c.Dpi_cliente , c.Estado_civil, c.Sabe_firmar FROM Cliente c "+
                                 "INNER JOIN telefonocliente tel ON tel.Cliente_idCliente = c.idCliente  "+
                                 "INNER JOIN direccion_cliente dir ON dir.idDireccion_cliente = c.Direccion_cliente_idDireccion_cliente  "+
                                 "INNER JOIN  municipio muni ON muni.idMunicipio = dir.Municipio_idMunicipio  "+
                                 "INNER JOIN departamento depto ON depto.idDepartamento = muni.Departamento_idDepartamento "+
                                 "WHERE idCliente = ' " + sentencia+ "'");
           
     
        return rs;
     }
    
    
    public java.sql.ResultSet TelefonoCliente(String idCliente) throws SQLException {
         java.sql.ResultSet rs = null ;
         
         Statement cs = con.createStatement();
         
         rs  = cs.executeQuery("SELECT idTelefonoCliente , Telefono as 'noTel', TipoTelefono_idTipoTel  as 'tipo' , tipo.NombreTipo FROM telefonocliente tel " +
                               "INNER JOIN tipotelefono tipo oN tipo.idTipoTel = tel.TipoTelefono_idTipoTel " +
                               "WHERE Cliente_idCliente = '"+ idCliente.trim()+ "'");
         
         return rs;
        
    }
    
    public java.sql.ResultSet TelefonoEstudiante(String noCarne) throws SQLException {
         java.sql.ResultSet rs = null ;
         
         Statement cs = con.createStatement();
         
         rs  = cs.executeQuery("SELECT tel.idTelefono , tel.Telefono as 'noTel', TipoTelefono_idTipoTel  as 'tipo' , tipo.NombreTipo FROM telefonoestudiante tel " +
                               "INNER JOIN tipotelefono tipo oN tipo.idTipoTel = tel.TipoTelefono_idTipoTel " +
                               "WHERE tel.Estudiante_NoCarne = '"+ noCarne.trim()+ "'");
         
         return rs;
        
    }

    
    public void ActualizarTelefono(String idCliente, String numTel, int tipo, String idTel) throws SQLException{
          java.sql.CallableStatement cs = con.prepareCall("{call Actualiza_telefono_cliente( " + idTel + ", " +numTel + ","+ idCliente + ","+ String.valueOf(tipo)+ ")}");
    
           java.sql.Statement stmt  = con.createStatement();
           java.sql.ResultSet rs = cs.executeQuery();
        
    }
    
     public void insertarTelefonoCliente(String Telefono,int tipo, String idCliente){
        
        try {
            java.sql.CallableStatement cs = con.prepareCall("{call InsertaTelCliente('"+Telefono+"',"+String.valueOf(tipo)+","+  idCliente+")}");
            java.sql.Statement stmt  = con.createStatement();
            java.sql.ResultSet rs = cs.executeQuery();
            
        } catch (SQLException ex) {
          
        }

    }
     
    public java.sql.ResultSet Usuario() throws SQLException {
         java.sql.ResultSet rs = null ;
         
         Statement cs = con.createStatement();
         
         rs  = cs.executeQuery("select contrasena, nombreUsuario, apellidoUsuario,idUsuario from usuario");
         
         return rs;
        
    }
    
    
    public java.sql.ResultSet BusquedaAlumno(String sentencia) throws SQLException{
        java.sql.ResultSet rs = null;
        Statement cs = con.createStatement();
        rs = cs.executeQuery("SELECT  Nombre_cliente, Apellido_cliente, concat(Nombre_cliente,' ', Apellido_cliente) AS 'Nombre' ,concat(No_registro_cliente,No_orden_cliente) AS 'No. Cedula' ,"+
                                 "month(Fecha_nacimiento) as 'MES', day(Fecha_nacimiento) as 'Dia', Year(Fecha_Nacimiento) as 'Año',"+
                                 "tel.Telefono, dir.Direccion_cliente as 'Direccion', dir.zona as 'Zona' ,muni.Nombre_municipio as 'Muni',depto.Nombre_departamento as 'Depto' , "+
                                 "No_registro_cliente as 'Reg' ,No_orden_cliente as 'orden', "  +
                                 " c.idCliente , c.Direccion_cliente_idDireccion_cliente as 'Dir', c.Dpi_cliente , c.Estado_civil, c.Sabe_firmar FROM Cliente c "+
                                 "INNER JOIN telefonocliente tel ON tel.Cliente_idCliente = c.idCliente  "+
                                 "INNER JOIN direccion_cliente dir ON dir.idDireccion_cliente = c.Direccion_cliente_idDireccion_cliente  "+
                                 "INNER JOIN  municipio muni ON muni.idMunicipio = dir.Municipio_idMunicipio  "+
                                 "INNER JOIN departamento depto ON depto.idDepartamento = muni.Departamento_idDepartamento "+
                                  sentencia);
        
        return rs;
    }
    
     public java.sql.ResultSet VerDatos(String sentencia) throws SQLException
     {
         java.sql.ResultSet rs = null;
         Statement cs = con.createStatement();
         rs = cs.executeQuery("SELECT NoCarne, NoBufete, Nombre_estudiante, Apellido_estudiante, email_estudiante,Fecha_nac_estudiante as 'dob' , "+
                 "NoReg_estudiante as reg, NoOrden_estudiante as orden, Dpi_estudiante,Estado_civil_estudiante,dir.Direccion_estudiante, dir.zona,"+
                 "month(Fecha_nac_estudiante) as 'MES', day(Fecha_nac_estudiante) as 'Dia', Year(Fecha_nac_estudiante) as 'Año',"+
                 " muni.Nombre_municipio as 'muni' ,depto.idDepartamento as 'idDep',tel.idTelefono, tel.Telefono ,telDos.Telefono,telDos.idTelefono , dir.idDireccion_estudiante as 'dir' ,"+
                 " depto.Nombre_departamento  from estudiante e "+
                 "INNER JOIN direccion_estudiante dir on dir.idDireccion_estudiante = Direccion_estudiante_idDireccion_estudiante "+
                 "INNER JOIN telefonoestudiante tel on tel.Estudiante_NoCarne = NoCarne "+
                 "INNER JOIN  municipio muni ON muni.idMunicipio = dir.Municipio_idMunicipio "+
                 "INNER JOIN departamento depto ON depto.idDepartamento = muni.Departamento_idDepartamento "+
                 "INNER JOIN telefonoestudiante telDos on telDos.Estudiante_NoCarne = NoCarne "+
                 sentencia);
         return rs;
     }
     
      public java.sql.ResultSet VerDatosAlumno(String sentencia) throws SQLException
     {
         java.sql.ResultSet rs = null;
         Statement cs = con.createStatement();
         rs = cs.executeQuery("SELECT NoCarne, NoBufete, Nombre_estudiante, Apellido_estudiante, email_estudiante,Fecha_nac_estudiante as 'dob' , "+
                 "NoReg_estudiante as reg, NoOrden_estudiante as orden, Dpi_estudiante,Estado_civil_estudiante,dir.Direccion_estudiante, dir.zona,"+
                 "month(Fecha_nac_estudiante) as 'MES', day(Fecha_nac_estudiante) as 'Dia', Year(Fecha_nac_estudiante) as 'Año',"+
                 " muni.Nombre_municipio as 'muni' ,depto.idDepartamento as 'idDep',tel.idTelefono, tel.Telefono , dir.idDireccion_estudiante as 'dir' ,"+
                 " depto.Nombre_departamento , dir.Direccion_estudiante as 'Direccion', dir.Zona as 'Zona' from estudiante e "+
                 "INNER JOIN direccion_estudiante dir on dir.idDireccion_estudiante = Direccion_estudiante_idDireccion_estudiante "+
                 "INNER JOIN telefonoestudiante tel on tel.Estudiante_NoCarne = NoCarne "+
                 "INNER JOIN  municipio muni ON muni.idMunicipio = dir.Municipio_idMunicipio "+
                 "INNER JOIN departamento depto ON depto.idDepartamento = muni.Departamento_idDepartamento "+
                 
                 "WHERE NoCarne = '"+sentencia+ "'");
         return rs;
     }
     
     
    
    
 
    
     
     
}